{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "8b374cfc-768f-4e70-b1b7-0f593eeab399",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 准备环境\n",
    "\n",
    "import os\n",
    "from openai import OpenAI\n",
    "\n",
    "api_key = os.getenv('DEEPSEEK_API_KEY')\n",
    "if not api_key:\n",
    "    api_key = ''\n",
    "\n",
    "client = OpenAI(\n",
    "    api_key=api_key,\n",
    "    base_url='https://api.deepseek.com/v1'\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "a555ac37-d2ed-46ef-84d3-cf592578ff8b",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 设置系统提示词\n",
    "\n",
    "SYSTEM_PROMPT = \"\"\"\n",
    "你是一个资深的小红书爆款文案专家，擅长结合最新潮流和产品卖点，创作引人入胜、高互动、高转化的笔记文案。\n",
    "你的任务是根据用户提供的产品和需求，生成包含标题、正文、相关标签和表情符号的完整小红书笔记。\n",
    "请始终采用‘Thought-Action-Observation’模式进行推理和行动，文案风格需活泼、真诚、富有感染力。\n",
    "当完成任务后，请以JSON格式直接输出最终文案，格式如下：\n",
    "```json\n",
    "{\n",
    "    \"title\": \"小红书标题\",\n",
    "    \"body\": \"小红书正文\",\n",
    "    \"hashtags\": [\"#标签1\", \"#标签2\", \"#标签3\", \"#标签4\", \"#标签5\"],\n",
    "    \"emojis\": [\"🌟\", \"🔥\", \"❤️\"]\n",
    "}\n",
    "```\n",
    "在生成文案前，请务必先思考并收集足够的信息。\n",
    "\"\"\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "2bcace34-f082-4009-9495-94c62ea981c2",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 工具定义\n",
    "\n",
    "TOOLS_DEFINITION = [\n",
    "    {\n",
    "        \"type\": \"function\",\n",
    "        \"function\": {\n",
    "            \"name\": \"search_web\",\n",
    "            \"description\": \"搜索互联网上的实时信息，用于获取最新新闻、流行趋势、用户评价、行业报告等。请确保搜索关键词精确，避免宽泛的查询。\",\n",
    "            \"parameters\": {\n",
    "                \"type\": \"object\",\n",
    "                \"properties\": {\n",
    "                    \"query\": {\n",
    "                        \"type\": \"string\",\n",
    "                        \"description\": \"要搜索的关键词或问题，例如'最新小红书美妆趋势'或'深海蓝藻保湿面膜用户评价'。\"\n",
    "                    }\n",
    "                },\n",
    "                \"required\": [\"query\"]\n",
    "            }\n",
    "        }\n",
    "    },\n",
    "    {\n",
    "        \"type\": \"function\",\n",
    "        \"function\": {\n",
    "            \"name\": \"query_product_database\",\n",
    "            \"description\": \"查询内部产品数据库，获取指定产品的详细卖点、成分、适用人群、使用方法等信息。\",\n",
    "            \"parameters\": {\n",
    "                \"type\": \"object\",\n",
    "                \"properties\": {\n",
    "                    \"product_name\": {\n",
    "                        \"type\": \"string\",\n",
    "                        \"description\": \"要查询的产品名称，例如'深海蓝藻保湿面膜'。\"\n",
    "                    }\n",
    "                },\n",
    "                \"required\": [\"product_name\"]\n",
    "            }\n",
    "        }\n",
    "    },\n",
    "    {\n",
    "        \"type\": \"function\",\n",
    "        \"function\": {\n",
    "            \"name\": \"generate_emoji\",\n",
    "            \"description\": \"根据提供的文本内容，生成一组适合小红书风格的表情符号。\",\n",
    "            \"parameters\": {\n",
    "                \"type\": \"object\",\n",
    "                \"properties\": {\n",
    "                    \"context\": {\n",
    "                        \"type\": \"string\",\n",
    "                        \"description\": \"文案的关键内容或情感，例如'惊喜效果'、'补水保湿'。\"\n",
    "                    }\n",
    "                },\n",
    "                \"required\": [\"context\"]\n",
    "            }\n",
    "        }\n",
    "    }\n",
    "]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "451490dd-1646-40c5-9e4a-17446e2182b0",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 模拟工具调用\n",
    "\n",
    "import random\n",
    "import time\n",
    "\n",
    "def mock_search_web(query):\n",
    "    \"\"\"\n",
    "    模拟网页搜索工具，返回预设的搜索结果。\n",
    "    \"\"\"\n",
    "    print(f'[Tool Call] 模拟搜索网页：{query}')\n",
    "    time.sleep(1)\n",
    "    if '小红书美妆趋势' in query:\n",
    "        return \"近期小红书美妆流行'多巴胺穿搭'、'早C晚A'护肤理念、'伪素颜'妆容，热门关键词有#氛围感、#抗老、#屏障修复。\"\n",
    "    elif \"保湿面膜\" in query:\n",
    "        return \"小红书保湿面膜热门话题：沙漠干皮救星、熬夜急救面膜、水光肌养成。用户痛点：卡粉、泛红、紧绷感。\"\n",
    "    elif \"深海蓝藻保湿面膜\" in query:\n",
    "        return \"关于深海蓝藻保湿面膜的用户评价：普遍反馈补水效果好，吸收快，对敏感肌友好。有用户提到价格略高，但效果值得。\"\n",
    "    else:\n",
    "        return f\"未找到关于'{query}'的特定信息，但市场反馈通常关注产品成分、功效和用户体验。\"\n",
    "\n",
    "def mock_query_product_database(product_name):\n",
    "    \"\"\"\n",
    "    模拟查询产品数据库，返回预设的产品信息。\n",
    "    \"\"\"\n",
    "    print(f\"[Tool Call] 模拟查询产品数据库：{product_name}\")\n",
    "    time.sleep(0.5)\n",
    "    if \"深海蓝藻保湿面膜\" in product_name:\n",
    "        return \"深海蓝藻保湿面膜：核心成分为深海蓝藻提取物，富含多糖和氨基酸，能深层补水、修护肌肤屏障、舒缓敏感泛红。质地清爽不粘腻，适合所有肤质，尤其适合干燥、敏感肌。规格：25ml*5片。\"\n",
    "    elif \"美白精华\" in product_name:\n",
    "        return \"美白精华：核心成分是烟酰胺和VC衍生物，主要功效是提亮肤色、淡化痘印、改善暗沉。质地轻薄易吸收，适合需要均匀肤色的人群。\"\n",
    "    elif \"雅诗兰黛小棕瓶特润修护精华\" in product_name:\n",
    "        return \"雅诗兰黛小棕瓶特润修护精华：适合所有肤质，尤其熬夜党、敏感肌。核心成分包括二裂酵母、猴面包树籽提取物、透明质酸。睡前用，第二天皮肤透亮不暗沉；改善干燥起皮，脸摸起来软嫩细腻；长期用能维稳抗老，减少垮脸感。\"\n",
    "    else:\n",
    "        return f\"产品数据库中未找到关于'{product_name}'的详细信息。\"\n",
    "\n",
    "def mock_generate_emoji(context):\n",
    "    \"\"\"\n",
    "    模拟生成表情符号，根据上下文提供常用表情。\n",
    "    \"\"\"\n",
    "    print(f\"[Tool Call] 模拟生成表情符号，上下文：{context}\")\n",
    "    time.sleep(0.2)\n",
    "    if \"补水\" in context or \"水润\" in context or \"保湿\" in context:\n",
    "        return [\"💦\", \"💧\", \"🌊\", \"✨\"]\n",
    "    elif \"惊喜\" in context or \"哇塞\" in context or \"爱了\" in context:\n",
    "        return [\"🤩\", \"😍\", \"❤️\", \"🎉\"]\n",
    "    elif \"熬夜\" in context or \"疲惫\" in context:\n",
    "        return [\"🥱\", \"😫\", \"🌙\", \"😴\"]\n",
    "    elif \"好物\" in context or \"推荐\" in context:\n",
    "        return [\"👍\", \"🏆\", \"⭐\", \"💎\"]\n",
    "    else:\n",
    "        return random.sample([\"💧\", \"😍\", \"👍\", \"🏆\", \"❤️\", \"✨\", \"🎉\", \"🌟\", \"🔥\"], k=min(5, len(context.split())))\n",
    "\n",
    "available_tools = {\n",
    "    \"search_web\": mock_search_web,\n",
    "    \"query_product_database\": mock_query_product_database,\n",
    "    \"generate_emoji\": mock_generate_emoji\n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "baa0cfb9-bdc0-4486-83a5-fd56d2d976f6",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 构建文案生成\n",
    "\n",
    "import json\n",
    "import re\n",
    "\n",
    "def generate_rednote(product_name, tone_style, max_iterations):\n",
    "    \"\"\"\n",
    "    使用DEEPSEEK Agent生成小红书爆款文案。\n",
    "    Args：\n",
    "        product_name(str)：要生成的产品名称。\n",
    "        tone_style(str)：文案的语气和风格，如“活泼甜美”、“知性”、“搞怪”等。\n",
    "        max_iterations(int)：Agent最大迭代次数，防止无限循环。\n",
    "    \"\"\"\n",
    "    print(f\"启动小红书文案生成助手，产品：{product_name}，风格：{tone_style}\")\n",
    "    \n",
    "    messages = [\n",
    "        {\"role\": \"system\", \"content\": SYSTEM_PROMPT},\n",
    "        {\"role\": \"user\", \"content\": f\"请为产品{product_name}生成一篇小红书爆款文案。要求：语气{tone_style}，包含标题、正文、至少5个相关标签和5个表情符号。请以完整的JSON格式输出，并确保JSON内容用markdown代码块包裹（例如：```json{{...}}```）。\"}\n",
    "    ]\n",
    "\n",
    "    iteration_count = 0\n",
    "    final_response = None\n",
    "\n",
    "    while iteration_count < max_iterations:\n",
    "        \n",
    "        iteration_count += 1\n",
    "        print(f\"-- 开始迭代第{iteration_count}次 --\")\n",
    "        \n",
    "        try:\n",
    "            # 调用DEEPSEEK API\n",
    "            response = client.chat.completions.create(\n",
    "                model=\"deepseek-chat\",\n",
    "                messages=messages,\n",
    "                tools=TOOLS_DEFINITION,\n",
    "                tool_choice=\"auto\"\n",
    "            )\n",
    "            response_message = response.choices[0].message\n",
    "            \n",
    "            # ReAct模式：处理工具调用\n",
    "            if response_message.tool_calls:\n",
    "                print(\"Agent：决定调用工具...\")\n",
    "                # 将工具调用信息添加到对话历史\n",
    "                messages.append(response_message)\n",
    "                tool_outputs = []\n",
    "                \n",
    "                for tool_call in response_message.tool_calls:\n",
    "                    function_name = tool_call.function.name\n",
    "                    # 确保参数是合法的JSON字符串，即使工具不要求参数，也需要传递空字典\n",
    "                    function_args = json.loads(tool_call.function.arguments) if tool_call.function.arguments else {}\n",
    "                    print(f\"Agent Action：调用工具'{function_name}'，参数{function_args}\")\n",
    "                    \n",
    "                    # 查找并执行对应的模拟工具函数\n",
    "                    if function_name in available_tools:\n",
    "                        tool_function = available_tools[function_name]\n",
    "                        tool_result = tool_function(**function_args)\n",
    "                        print(f\"Observation：工具返回结果：{tool_result}\")\n",
    "                        tool_outputs.append(\n",
    "                            {\n",
    "                                \"tool_call_id\": tool_call.id,\n",
    "                                \"role\": \"tool\",\n",
    "                                \"content\": str(tool_result)\n",
    "                            }\n",
    "                        )\n",
    "                    else:\n",
    "                        error_message = f\"错误：未知的工具'{function_name}'\"\n",
    "                        print(error_message)\n",
    "                        tool_outputs.append(\n",
    "                            {\n",
    "                                \"tool_call_id\": tool_call.id,\n",
    "                                \"role\": \"tool\",\n",
    "                                \"content\": error_message\n",
    "                            }\n",
    "                        )\n",
    "                # 将工具执行结果作为Observation添加到对话历史\n",
    "                messages.extend(tool_outputs)\n",
    "                \n",
    "            # ReAct模式：处理最终内容\n",
    "            elif response_message.content:\n",
    "                print(f\"模型生成结果：{response_message.content}\")\n",
    "                # 添加JSON提取和解析逻辑\n",
    "                json_string_match = re.search(r\"```json\\s*(\\{.*\\})\\s*```\", response_message.content, re.DOTALL)\n",
    "                if json_string_match:\n",
    "                    extracted_json_content = json_string_match.group(1)\n",
    "                    try:\n",
    "                        final_response = json.loads(extracted_json_content)\n",
    "                        print(\"Agent：任务完成，成功解析最终JSON文案！\")\n",
    "                        return json.dumps(final_response, ensure_ascii=False, indent=2)\n",
    "                    except json.JSONDecodeError as e:\n",
    "                        print(f\"Agent：提取到JSON块但解析失败：{e}\")\n",
    "                        print(f\"尝试解析的字符串：\\n{extracted_json_content}\")\n",
    "                        # 解析失败，继续对话\n",
    "                        messages.append(response_message)\n",
    "                else:\n",
    "                    # 如果没有匹配到json块，尝试直接解析整个content\n",
    "                    try:\n",
    "                        final_response = json.loads(response_message.content)\n",
    "                        print(\"Agent：任务完成，直接解析最终JSON文案！\")\n",
    "                        return json.dumps(final_response, ensure_ascii=False, indent=2)\n",
    "                    except json.JSONDecodeError:\n",
    "                        print(\"Agent：生成了非JSON格式内容或非Markdown JSON块，可能还在思考或出错\")\n",
    "                        # 非JSON格式，继续对话\n",
    "                        messages.append(response_message)\n",
    "                        \n",
    "            else:\n",
    "                print(\"Agent：未知响应，可能需要更多交互\")\n",
    "                break\n",
    "                \n",
    "        except Exception as e:\n",
    "            print(f\"调用DEEPSEEK API时发生错误：{e}\")\n",
    "            break\n",
    "            \n",
    "    print(\"Agent达到最大迭代次数或未能生成最终文案，请检查Prompt或增加迭代次数！\")\n",
    "    return \"未能成功生成文案！\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "579fc1ab-b66b-4bc5-9739-138defcda4f1",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 格式化小红书文案\n",
    "\n",
    "import json\n",
    "\n",
    "def format_rednote_for_markdown(json_string):\n",
    "    try:\n",
    "        data = json.loads(json_string)\n",
    "    except json.JSONDecodeError as e:\n",
    "        return f\"无法解析JSON字符串，原因：{e}；原始字符串：{json_string}\"\n",
    "        \n",
    "    title = data.get(\"title\", \"无标题\")\n",
    "    body = data.get(\"body\", \"\")\n",
    "    hashtags = data.get(\"hashtags\", [])\n",
    "\n",
    "    # 构建Markdown文本\n",
    "    markdown_output = f\"## {title}\\n\\n\"\n",
    "    markdown_output += f\"{body}\\n\\n\"\n",
    "    if hashtags:\n",
    "        hashtag_string = \" \".join(hashtags)\n",
    "        markdown_output += f\"{hashtag_string}\\n\"\n",
    "\n",
    "    return markdown_output.strip()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "4088b64c-006a-48ce-bde0-b0e68233dda3",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "启动小红书文案生成助手，产品：深海蓝藻保湿面膜，风格：活泼甜美\n",
      "-- 开始迭代第1次 --\n",
      "Agent：决定调用工具...\n",
      "Agent Action：调用工具'query_product_database'，参数{'product_name': '深海蓝藻保湿面膜'}\n",
      "[Tool Call] 模拟查询产品数据库：深海蓝藻保湿面膜\n",
      "Observation：工具返回结果：深海蓝藻保湿面膜：核心成分为深海蓝藻提取物，富含多糖和氨基酸，能深层补水、修护肌肤屏障、舒缓敏感泛红。质地清爽不粘腻，适合所有肤质，尤其适合干燥、敏感肌。规格：25ml*5片。\n",
      "-- 开始迭代第2次 --\n",
      "Agent：决定调用工具...\n",
      "Agent Action：调用工具'generate_emoji'，参数{'context': '补水保湿、惊喜效果、适合敏感肌'}\n",
      "[Tool Call] 模拟生成表情符号，上下文：补水保湿、惊喜效果、适合敏感肌\n",
      "Observation：工具返回结果：['💦', '💧', '🌊', '✨']\n",
      "-- 开始迭代第3次 --\n",
      "模型生成结果：```json\n",
      "{\n",
      "    \"title\": \"💦深海蓝藻保湿面膜｜敏感肌的补水救星！用完皮肤嫩到发光✨\",\n",
      "    \"body\": \"姐妹们！我终于找到了敏感肌的补水救星——深海蓝藻保湿面膜！💦\\n\\n🌟核心成分是深海蓝藻提取物，富含多糖和氨基酸，不仅能深层补水，还能修护肌肤屏障，舒缓泛红！像我这种一到换季就干到起皮的敏感肌，用完一片直接嫩到发光！✨\\n\\n🌊质地清爽不粘腻，敷完皮肤水当当的，完全不会闷痘！而且25ml的精华液超级足，敷完还能涂脖子和手臂，一点都不浪费～\\n\\n💧我已经连续用了一周，皮肤状态稳定多了，上妆都不卡粉了！真心推荐给所有干燥、敏感肌的姐妹！\\n\\n#敏感肌必备 #补水保湿 #深海蓝藻面膜 #护肤推荐 #平价好物\",\n",
      "    \"hashtags\": [\"#敏感肌必备\", \"#补水保湿\", \"#深海蓝藻面膜\", \"#护肤推荐\", \"#平价好物\"],\n",
      "    \"emojis\": [\"💦\", \"💧\", \"🌊\", \"✨\", \"🌟\"]\n",
      "}\n",
      "```\n",
      "Agent：任务完成，成功解析最终JSON文案！\n",
      "-- 生成的文案 1 --\n",
      "## 💦深海蓝藻保湿面膜｜敏感肌的补水救星！用完皮肤嫩到发光✨\n",
      "\n",
      "姐妹们！我终于找到了敏感肌的补水救星——深海蓝藻保湿面膜！💦\n",
      "\n",
      "🌟核心成分是深海蓝藻提取物，富含多糖和氨基酸，不仅能深层补水，还能修护肌肤屏障，舒缓泛红！像我这种一到换季就干到起皮的敏感肌，用完一片直接嫩到发光！✨\n",
      "\n",
      "🌊质地清爽不粘腻，敷完皮肤水当当的，完全不会闷痘！而且25ml的精华液超级足，敷完还能涂脖子和手臂，一点都不浪费～\n",
      "\n",
      "💧我已经连续用了一周，皮肤状态稳定多了，上妆都不卡粉了！真心推荐给所有干燥、敏感肌的姐妹！\n",
      "\n",
      "#敏感肌必备 #补水保湿 #深海蓝藻面膜 #护肤推荐 #平价好物\n",
      "\n",
      "#敏感肌必备 #补水保湿 #深海蓝藻面膜 #护肤推荐 #平价好物\n"
     ]
    }
   ],
   "source": [
    "# 测试案例一\n",
    "\n",
    "result_1 = generate_rednote(product_name=\"深海蓝藻保湿面膜\", tone_style=\"活泼甜美\", max_iterations=5)\n",
    "print(\"-- 生成的文案 1 --\")\n",
    "print(format_rednote_for_markdown(result_1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "f6a55dd2-13e7-438c-a6f7-9d6fb548a723",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "启动小红书文案生成助手，产品：美白精华，风格：知性温柔\n",
      "-- 开始迭代第1次 --\n",
      "Agent：决定调用工具...\n",
      "Agent Action：调用工具'query_product_database'，参数{'product_name': '美白精华'}\n",
      "[Tool Call] 模拟查询产品数据库：美白精华\n",
      "Observation：工具返回结果：美白精华：核心成分是烟酰胺和VC衍生物，主要功效是提亮肤色、淡化痘印、改善暗沉。质地轻薄易吸收，适合需要均匀肤色的人群。\n",
      "-- 开始迭代第2次 --\n",
      "Agent：决定调用工具...\n",
      "Agent Action：调用工具'generate_emoji'，参数{'context': '美白精华提亮肤色'}\n",
      "[Tool Call] 模拟生成表情符号，上下文：美白精华提亮肤色\n",
      "Observation：工具返回结果：['😍']\n",
      "-- 开始迭代第3次 --\n",
      "模型生成结果：```json\n",
      "{\n",
      "    \"title\": \"✨28天逆袭冷白皮！这款美白精华让我彻底告别暗沉✨\",\n",
      "    \"body\": \"姐妹们！我终于找到了我的本命美白精华！💖\\n\\n作为一个常年熬夜党，皮肤暗沉、痘印问题真的困扰我好久…直到遇见这款美白精华，简直打开了新世界的大门！🌟\\n\\n🌟核心成分：烟酰胺+VC衍生物，双管齐下提亮肤色，淡化痘印效果绝了！\\n🌟质地轻薄：一抹就吸收，完全不会黏腻，夏天用也毫无负担～\\n🌟28天见证奇迹：坚持用了一个月，肤色明显均匀透亮，连闺蜜都问我是不是偷偷去打水光了！😍\\n\\n如果你也在为暗沉发愁，真的可以试试它！温和不刺激，敏感肌也能安心用～\\n\\n#美白精华 #提亮肤色 #淡化痘印 #护肤推荐 #冷白皮养成\",\n",
      "    \"hashtags\": [\"#美白精华\", \"#提亮肤色\", \"#淡化痘印\", \"#护肤推荐\", \"#冷白皮养成\"],\n",
      "    \"emojis\": [\"✨\", \"💖\", \"🌟\", \"😍\", \"～\"]\n",
      "}\n",
      "```\n",
      "Agent：任务完成，成功解析最终JSON文案！\n",
      "-- 生成的文案 2 --\n",
      "## ✨28天逆袭冷白皮！这款美白精华让我彻底告别暗沉✨\n",
      "\n",
      "姐妹们！我终于找到了我的本命美白精华！💖\n",
      "\n",
      "作为一个常年熬夜党，皮肤暗沉、痘印问题真的困扰我好久…直到遇见这款美白精华，简直打开了新世界的大门！🌟\n",
      "\n",
      "🌟核心成分：烟酰胺+VC衍生物，双管齐下提亮肤色，淡化痘印效果绝了！\n",
      "🌟质地轻薄：一抹就吸收，完全不会黏腻，夏天用也毫无负担～\n",
      "🌟28天见证奇迹：坚持用了一个月，肤色明显均匀透亮，连闺蜜都问我是不是偷偷去打水光了！😍\n",
      "\n",
      "如果你也在为暗沉发愁，真的可以试试它！温和不刺激，敏感肌也能安心用～\n",
      "\n",
      "#美白精华 #提亮肤色 #淡化痘印 #护肤推荐 #冷白皮养成\n",
      "\n",
      "#美白精华 #提亮肤色 #淡化痘印 #护肤推荐 #冷白皮养成\n"
     ]
    }
   ],
   "source": [
    "# 测试案例二\n",
    "\n",
    "result_2 = generate_rednote(product_name=\"美白精华\", tone_style=\"知性温柔\", max_iterations=5)\n",
    "print(\"-- 生成的文案 2 --\")\n",
    "print(format_rednote_for_markdown(result_2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "52b462c7-6e3c-4574-8a1c-e11832db17a8",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "启动小红书文案生成助手，产品：雅诗兰黛小棕瓶特润修护精华，风格：知性温柔\n",
      "-- 开始迭代第1次 --\n",
      "Agent：决定调用工具...\n",
      "Agent Action：调用工具'query_product_database'，参数{'product_name': '雅诗兰黛小棕瓶特润修护精华'}\n",
      "[Tool Call] 模拟查询产品数据库：雅诗兰黛小棕瓶特润修护精华\n",
      "Observation：工具返回结果：雅诗兰黛小棕瓶特润修护精华：适合所有肤质，尤其熬夜党、敏感肌。核心成分包括二裂酵母、猴面包树籽提取物、透明质酸。睡前用，第二天皮肤透亮不暗沉；改善干燥起皮，脸摸起来软嫩细腻；长期用能维稳抗老，减少垮脸感。\n",
      "-- 开始迭代第2次 --\n",
      "Agent：决定调用工具...\n",
      "Agent Action：调用工具'generate_emoji'，参数{'context': '雅诗兰黛小棕瓶特润修护精华，熬夜党必备，皮肤透亮细腻'}\n",
      "[Tool Call] 模拟生成表情符号，上下文：雅诗兰黛小棕瓶特润修护精华，熬夜党必备，皮肤透亮细腻\n",
      "Observation：工具返回结果：['🥱', '😫', '🌙', '😴']\n",
      "-- 开始迭代第3次 --\n",
      "模型生成结果：```json\n",
      "{\n",
      "    \"title\": \"熬夜党必入！雅诗兰黛小棕瓶特润修护精华，一夜回春不是梦 🌟\",\n",
      "    \"body\": \"姐妹们！熬夜党的救星来了！🥱 雅诗兰黛小棕瓶特润修护精华，真的是我用过最神奇的精华之一！\\n\\n🌙 睡前涂一层，第二天皮肤透亮到发光，完全看不出熬夜的痕迹！😫 以前熬夜后脸又干又暗沉，现在完全不用担心，皮肤软嫩细腻，摸起来超舒服～\\n\\n✨ 核心成分二裂酵母+猴面包树籽提取物+透明质酸，修护力MAX！敏感肌也能用，长期用下来皮肤状态超稳，垮脸感也减轻了！\\n\\n💆‍♀️ 使用方法超简单：洁面后直接涂，吸收超快，完全不黏腻。一瓶能用好久，性价比超高！\\n\\n真的，熬夜党必备！信我，你会爱上它的！😴\",\n",
      "    \"hashtags\": [\"#雅诗兰黛小棕瓶\", \"#熬夜党必备\", \"#修护精华\", \"#敏感肌救星\", \"#护肤神器\"],\n",
      "    \"emojis\": [\"🌟\", \"🥱\", \"🌙\", \"😫\", \"😴\"]\n",
      "}\n",
      "```\n",
      "Agent：任务完成，成功解析最终JSON文案！\n",
      "-- 生成的文案 3 --\n",
      "## 熬夜党必入！雅诗兰黛小棕瓶特润修护精华，一夜回春不是梦 🌟\n",
      "\n",
      "姐妹们！熬夜党的救星来了！🥱 雅诗兰黛小棕瓶特润修护精华，真的是我用过最神奇的精华之一！\n",
      "\n",
      "🌙 睡前涂一层，第二天皮肤透亮到发光，完全看不出熬夜的痕迹！😫 以前熬夜后脸又干又暗沉，现在完全不用担心，皮肤软嫩细腻，摸起来超舒服～\n",
      "\n",
      "✨ 核心成分二裂酵母+猴面包树籽提取物+透明质酸，修护力MAX！敏感肌也能用，长期用下来皮肤状态超稳，垮脸感也减轻了！\n",
      "\n",
      "💆‍♀️ 使用方法超简单：洁面后直接涂，吸收超快，完全不黏腻。一瓶能用好久，性价比超高！\n",
      "\n",
      "真的，熬夜党必备！信我，你会爱上它的！😴\n",
      "\n",
      "#雅诗兰黛小棕瓶 #熬夜党必备 #修护精华 #敏感肌救星 #护肤神器\n"
     ]
    }
   ],
   "source": [
    "# 测试案例三\n",
    "\n",
    "result_3 = generate_rednote(product_name=\"雅诗兰黛小棕瓶特润修护精华\", tone_style=\"知性温柔\", max_iterations=5)\n",
    "print(\"-- 生成的文案 3 --\")\n",
    "print(format_rednote_for_markdown(result_3))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "dc0a41ec-9701-44ce-9db5-93cca5fd3e5e",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.13.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
